This invention relates to networked devices in general and, more particularly, to the sharing of configuration information among a plurality of devices.
It is often desirable for systems to share data among a plurality of individual devices. However, in many cases, a given piece of data, known as a variable, is needed by some but not all of the devices in a networked system. A device is said to produce a variable if it makes the variable's value available to another device. A device is said to consume a variable if it obtains the variable's value from another device and uses it in some way, such as by using the value in a computation, by using the value to affect some control function, or by displaying the value to a human. Some variables may be produced by a single device and consumed by one or more device(s), while other devices may produce several variables that are each consumed by many different devices. For each variable, the producer and consumer(s) must agree on the configuration of the variable for the variable's value to be successfully transferred and used by each device. The configuration of the variable may comprise the data type, encoding, location, and the array length of the variable, and/or any other necessary information. Various methods exist for sharing configuration information between devices.
Typically, a centralized configuration store is created such that the needed configuration information is available globally. Systems that desire to be highly reliable cannot tolerate the failure point of a centralized store. Additionally, geographic and environmental considerations may preclude the necessary network connection to a centralized store. A programmable logic controller (“PLC”), for example, is typically configured by using a programming tool that is often located on a laptop computer. The laptop downloads the configuration to the PLC via a network connection or a direct, dedicated serial line. Neither the PLC nor the laptop is able to consistently maintain a network connection to any other device, such as a centralized configuration store, because of physical limitations. This is particularly true in an industrial environment, where electrical noise or in-progress construction creates an unstable environment.
Even if the environment can support a centralized configuration store, a PLC is not generally equipped to access the centralized configuration store. Typically, the laptop computer is used to access the centralized configuration store, and it is responsible for downloading any configuration changes to the PLC and for informing the centralized store of those changes. The centralized configuration store might fail to update its copy of the configuration due to an internal or network error or because the centralized store is not operational at the particular moment. Finally, even if both the PLC and the centralized store are each initially updated correctly with the proper information, a subsequent failure of the centralized store can cause loss of data. Any of these failures causes the two configurations to become different, precluding the useful transfer of subsequent data samples.
The potential for failure when attempting to transmit the same configuration information to a single device and a to centralized configuration store is compounded for each device. Since each consuming device must understand at least some of the configuration of the producer, the potential for failure is increased with each additional consumer. Each time the configuration of the producer is changed, the centralized store and each consumer must be updated with the new configuration information. If the configuration is changed at the producer but is not updated in the centralized store, the system will fail. If each consumer is not able to retrieve data from the centralized store, the system will fail. Consumers, such as PLCs, which are unable to initiate communication with the centralized configuration store require a third party, such as a laptop computer, to retrieve the configuration information from the store and download it to each consumer. Most systems require that a human remember to download the configuration information for each consumer individually. The system is typically unusable during the period of time that is required for all the updates to occur.
Systems that must be highly reliable and that must continue to operate even as changes are made cannot tolerate the potential for failure that is introduced by the centralized server and by the resulting need to keep the configuration information synchronized across the server and many devices.
The above problem is more easily described by pointing out a specific product, such as a PLC, that is constrained by the distributed nature of its use. The problem, however, is general in nature and exists in many distributed systems.